紀錄一下這幾天設定 wake on lan 的重點,以免自己之後回來又忘記。
前情提要
之前已經設定好 Linux Mint 的 VNC 了,現在只要一開機就會自動啟動 VNC,然後我們就可以用 VNC Viewer 連進去,不過一直讓電腦處於開機狀態似乎是很吵又很浪費電的一件事情,所以我希望只有我要用的時候再讓它開機就好,這時候使用 Wake On Lan 就是一個很棒的解決方法。
Wake On Lan 是什麼?
顧名思義,就是利用網路喚醒機器,以下簡稱 wol。
wol server
一台常駐開機的設備,負責傳送 Magic Packet,我們就是透過它來喚醒機器。
wol client
需要被喚醒的機器,負責接收 Magic Packet。
設備
- 樹梅派 -> wol server
- sun (Linux Mint) -> wol client
使用到的工具
- Terminus: 用於 SSH 連線
- Deco: 固定 wol client (sun) ip address 以及透過外部 Port 導向至內部 ip
- remoteit: 讓 wol server (樹梅派) 啟動
- VNC Viewer: 用於測試 sun 是否開機成功
開始
首先透過 remoteit 啟動 wol server (樹梅派)
使用 SSH 連進去
接著安裝 wakeonlan
sudo apt install wakeonlan
這樣就可以了,暫時先離開,等等再回來發送 Magic Packet
要先確認主機板是否支援 Wake On Lan 喔~
如果有支援,記得要去 BIOS 開啟功能
接下來用 SSH 連進 wol client (sun)
安裝 ethtool
sudo apt install ethtool
查看網卡名稱
ip a
OUTPUT
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:60:6e:6e:c7:eb brd ff:ff:ff:ff:ff:ff
inet 192.168.68.115/24 brd 192.168.68.255 scope global dynamic noprefixroute enp3s0
valid_lft 6941sec preferred_lft 6941sec
inet6 ::1014/128 scope global dynamic noprefixroute
valid_lft 86144sec preferred_lft 86144sec
inet6 fe80::ca8a:e292:99e0:781c/64 scope link noprefixroute
valid_lft forever preferred_lft forever
可以看到我這邊的網卡名稱是 enp3s0
然後 MAC ADDRESS 是 08:60:6e:6e:c7:eb (記起來,等下會用到)
接下來查看 wol 的啟用狀態
sudo ethtool enp3s0 # 將 enp3s0 改成你自己的網卡名稱
OUTPUT
Settings for enp3s0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 100Mb/s
Duplex: Full
Auto-negotiation: on
master-slave cfg: preferred slave
master-slave status: slave
Port: Twisted Pair
PHYAD: 0
Transceiver: external
MDI-X: Unknown
Supports Wake-on: pumbg
Wake-on: g
Link detected: yes
可以看到 Wake-on 目前是 g
如果你是 d (disable) 的話,可以透過以下指令將其開啟
sudo ethtool -s enp3s0 wol g
這樣就設定好了,可以使用以下指令讓機器休眠
sudo pm-hibernate
接下來回到 wol server (樹梅派)
wakeonlan 08:60:6e:6e:c7:eb # 記得改成你自己的 wol client MAC ADDRESS
OUTPUT
Sending magic packet to 255.255.255.255:9 with 08:60:6e:6e:c7:eb
如果成功,你的機器現在就會啟動了~
補充
由於 Wake-On 的設定重開機就會變回 d (disable)
所以我們可以透過 rc local 讓他在開機的時候自動啟動
sudo vim /etc/rc.local
輸入以下內容
#!/bin/bash
sleep 5
ethtool -s enp3s0 wol g
存檔離開之後再更改權限
sudo chmod a+x /etc/rc.local
接下來使用 systemd 開啟 rc-local
sudo systemctl enable rc-local.service # 在開機的時候自動啟動服務
sudo systemctl start rc-local.service # 現在啟動服務
筆記 for myself
Deco 注意事項
固定 wol client (sun) ip address --> 位置保留
透過外部 Port 導向至內部 ip --> NAT 導向